//
//  DAButton.h
//  DAKitTest
//
//  Created by DreamArts on 16/3/31.
//  Copyright © 2016年 DreamArts. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef enum {
    
    DAButtonAlignmentNone = 0,             // 默认
    DAButtonAlignmentImageTopLabelBottom ,    // 图片在上 label 在下
    DAButtonAlignmentImageleftLabelRight,      // 图片在左  label 在右
    DAButtonAlignmentImageRightLabelLeft,      // 图片在右  label 在左
    DAButtonAlignmentImageBottomLabelTop,      // 图片在下  label 在上
    DAButtonAlignmentImageCenter
    
} DAButtonAlignment;

typedef enum {
    DAButtonStyleNone,//无风格
    DAButtonStyleOriginal//DA原始风格
    //TODO:
} DAButtonStyle;//按钮风格

typedef void (^ButtonTouchBlocks)(UIControlEvents touchType);

@interface DAButton : UIButton

@property (nonatomic) DAButtonAlignment buttonAlignment;//突变与标题对齐方式

@property (nonatomic,setter = setStyle:) DAButtonStyle style;//按钮风格

@property (nonatomic,setter = setDragEnabled:) BOOL dragEnabled;    // 是否允许拖拽

/*!
 @method  initWithFrame:
 @abstract  frame构造方法
 @discussion 构造一个button实例
 @param frame
 @result UIButton
 */
- (instancetype)initWithFrame:(CGRect)frame style:(DAButtonStyle)style;

/*!
 @method  buttonWithType:
 @abstract  buttonType构造方法
 @discussion 构造一个button实例
 @param buttonType 按钮类型
 @result UIButton
 */
+ (instancetype)buttonWithType:(UIButtonType)buttonType;

/*!
 @method  addButtonInView:title:image:alignment:onTouchBlock:
 @abstract  按钮快速设置方法
 @discussion 给按钮快速设置基本显示内容以及点击响应事件
 @param superView 添加的父view
 @param title 按钮名称
 @param image 按钮图片
 @param alignment 图片对齐方式
 @block block 响应点击类型以及触发动作
 @result void
 */
- (void)addButtonInView:(UIView *)superView title:(NSString *)title image:(UIImage *)image DAButtonAlignment:(DAButtonAlignment)alignment onTouchBlock:(ButtonTouchBlocks)block;

/*!
 @method  setDragEnabled
 @abstract  拖拽
 @discussion  设置拖拽方法
 @param     dragEnabled 是否允许拖拽
 @result void
 */

- (void)setDragEnabled:(BOOL)dragEnabled;

/*!
 @method  setStyle
 @abstract  按钮风格
 @discussion  设置按钮风格
 @param style
 @result void
 */
- (void)setStyle:(DAButtonStyle)style;

/*!
 @add method  longPan
 @abstract  长按动画
 @discussion 给label 添加长按手势,使其有动画效果
 @param animation 是否需要长按动画
 @result void
 
 */
- (void)addLongPanWithAnimation:(BOOL)animation;

/*!
 @add method  CustomLongPan
 @abstract   需要自定义长按动画
 @discussion 给label 添加长按手势,使其有动画效果
 @param      action 长按需要实现的方法 target 可以指定当前谁来实现这个方法
 @result void
 
 */

- (void)customLongPanAnimation:(SEL)action target:(id)target animation:(BOOL)animation;


@end
